1. Field of the Invention
The present invention relates generally to the distribution of information in a client/server computer environment, and more specifically to a method and apparatus for delivering real-time multimedia information to clients via a distributed network.
2. Description of the Related Art
The creation of pictures or images has been a human activity since the beginning of humanity. However, until recent history viewing of an image required the viewer to be physically present at the image. This was geographically cumbersome. Photography, both still and motion, broke this geographic constraint by allowing pictures to be captured and transported independent of the physical images they represented. Television enhanced transmission of images, by sending images, recorded or live, to any geographic location capable of receiving a radio signal. But for the most part, viewers of television can only view images that are scheduled for transmission, rather than selecting images at will.
With the development of computers, and more specifically computers that are linked across a network, images stored on one computer may be demanded by a viewer at a remote computer, and almost instantaneously provided to the viewer's computer over the computer network. One computer network that is increasingly being used is the Internet, the well-known international computer network that links various military, government, education, nonprofit, industrial and financial institutions, commercial enterprises, and individuals.
To illustrate how computers are used to transmit images to a viewer, reference is made to FIG. 1. FIG. 1 represents a computer system 100 that includes a server 102 connected to a number of mass storage devices 104. The mass storage devices 104 are used to store a number of video frames 120. The video frames 120 can be still images, or can be combined into sequences to create moving pictures. The sequences reside on the mass storage devices 104, and upon request, may be transmitted by the server 102 to other computers 108 via a network 106. In addition, the video frames 120 may be transferred to remote computers, such as the computer 112, via a network 116, using a router 110 and/or a modem 114. One skilled in the art should appreciate that the network 116 could be a dedicated connection, or a dial-up connection, and could utilize any of a number of network protocols such as TCP/IP or Client/Server configurations.
In operation, a user sitting at any of the computers 108, 112 can request video frames 120 from the server 102, and the server will retrieve the video frames 120 from the mass storage devices 104, and transmit the frames 120 over the network 106. Upon receipt of the video frames 120, the computers 108, 112 displays the images for the requester.
It should be appreciated that the computers 108, 112 may be positioned physically close to the server 102, or may be thousands of miles away. The computers 108, 112 may be connected to the server 102 via a direct LAN connection such as Ethernet or Token Ring, or may utilize any of a number of different data channels such as plain old telephone service (POTS), ISDN or ADSL, depending on the availability of each of these services, their cost, and the performance required by the end user. As should be appreciated, the more bandwidth required by the user, the higher the cost.
In most cases, the amount of data required to represent a video frame, or more specifically a sequence of video frames 120 is significant. For example, a color image or frame is typically represented by a matrix of individual dots or pixels, each having a particular color defined by a combination of red, green and blue intensities (RGB). To create a palette of 16 million colors (i.e., true color), each of the RGB intensities are represented by an 8-bit value. So, for each pixel, 24-bits are required to define a pixel's color. A typical computer monitor has a resolution of 1024 pixels (across) by 768 pixels (down). So, to create a full screen image for a computer requires 1024.times.768.times.24 bits=18,874,368 bits, or 2,359,296 bytes of data to be stored. And that is just for one image.
If a moving picture is to be displayed, a sequence of images are grouped, and displayed one after another, at a rate of approximately 30 frames per second. Thus, a 1 second, 256 color, full screen movie could require as much as 60 megabytes of data storage. With present technology, even very expensive storage systems, and high speed networks would be overwhelmed if alternatives were not provided.
One alternative to reducing the amount of data required to represent images or moving pictures is to simply reduce the size of frames that are transmitted and displayed. One popular frame size is 320 pixels in width and 240 pixels in height, or 320.times.240. Thus, a 256 color frame of this size requires 320.times.240.times.24=1,843,200 bits, or 230 kilobytes of data. This is significantly less (1/10.sup.th) than what is required for a full screen image. However, as frames are combined into moving pictures, the amount of data that must be transmitted is still significant.
An additional solution to reducing the amount of space required for video frames involves compressing the data, i.e., data is compressed before it is transmitted to a remote computer, and then decompressed by the remote computer before viewing. One skilled in the art will appreciate that a number of different compression methodologies have been developed, each directed at providing optimum compression for a particular data channel. In general, greater compression strategies are used where video frames are to be transmitted over low bandwidth connections, such as a standard analog telephone line. Faster compression strategies, that provide higher resolution images but lesser compression ratios, are typically used where high speed data channels transmit the video frames. Thus, depending on the speed of the data channel connection to a client, different compression methods may be used.
However, providing different compression methodologies for a single video sequence is problematic when attempting to transmit a video sequence to a large number of clients using a prior art distributed network. This will best be understood by providing a brief overview of a prior art solution for distributing video to a large number of clients, using a method referred to as "splitter" technology.
In the prior art, if a single server is used to provide a compressed video sequence to a number of different clients, the server may be overwhelmed by requests to the point where transmission performance to one or all of the clients is hindered. A solution to this problem has been to provide a primary server that serves a number of secondary servers, that in turn serve clients. In operation, a request for a video sequence is made by a client, causing its secondary server to request the compressed video sequence from the primary server. Upon receipt, the secondary server provides the compressed video sequence to the client. In addition, the secondary server stores the compressed video sequence so that for future requests, it can provide the compressed sequence to clients without disturbing the primary server. The task of providing the video sequence to the clients has thus been "split" according to the number of secondary servers used to provide the sequence to clients. This prior art solution of splitting has at least three inherent problems.
First, the secondary servers are viewed by the primary server as a client, which means that the information received by, and stored on the secondary server, is an exact replica of what will ultimately be provided to the client. While not discussed above, one skilled in the art should appreciate that the compressed video provided to a client only contains image data, and/or audio data, but does not contain any index information relating to the data. Such index information is often used to allow a user to rewind, fast forward, or seek for a particular location within a video sequence. When a client connected to a primary server, the primary server allowed clients to seek, rewind, etc. However, since the index information is not transferred to a client, and thus is not transferred to secondary servers, the client loses this indexing capability.
A second problem associated with splitter technology is that since the secondary servers do not contain compressed video for all possible data channels, the secondary servers are unable to dynamically switch video transmission to a client when the bandwidth of their data channels is altered. For example, if a client requests data from a secondary server over a high bandwidth data channel, the data received by the secondary server from the primary server will be for a high bandwidth data channel. If the data channel loses some of its bandwidth during transmission, the secondary server cannot effectively continue the data transmission to the client.
A third problem inherent in splitter technology is that since secondary servers merely request video sequences on behalf of clients, multiple clients accessing a secondary server over different data channels require the secondary server to make multiple requests to the primary server for different compressed video sequences. For example, a first client might request a compressed video sequence associated with transmission over a 28.8 Kbps telephone line. A second client might request the compressed video sequence associated with transmission over a 56 Kbs telephone line. The secondary server, in this instance, would be required to initiate two data transfer sessions with the primary server, one for the 28.8 Kbs video sequence, another for the 56 Kbs video sequence. Making multiple requests to the primary server hinders performance of the primary server, with the situation being further perturbed according to the number of different data channels supported by the secondary servers.